不同型別在變數之間的傳遞會產生不同的行為,筆記一下根本的原因,清楚了解之後,對於之後在寫程式很有幫助。
var a = 3 //a為純值變數,記憶體位置:0x001
var b = a //b為變數a內容的複製,記憶體位置:0x002
b = 5
console.log(a) //3
因記憶體位置不同,a跟b其實是不同的變數,重新對b指派其他值,並不會影響到a
var a = { name: `Julia`} //物件變數,去記憶體位置(0x003)取值
var b = a //根據a提供的位置參考,去同一個記憶體位置(0x003)取值
b.name = `Stella`
console.log(a) // {name: 'Stella'}
所以a跟b對到的是在同一個物件,所以改變b值,a值也會改變
不管是三明治書中還是huli老師都有提到大家對於call by value與call by reference都有各自分歧的意見,可能是因為在程式世界中, 名詞創造經常非常隨意,但重點其實在於搞懂不同型別的變數在JavaScript中的傳遞行為,才是對自己理解JavaScript比較有幫助的地方。
努力看完天書後,來點輕鬆的吧!分享我兒子的童言童語,調劑身心一下
2022/12/15
繼理光頭後阿咖又想突破
阿咖有天形容了他想剃的髮型(河童頭)⋯
我傻眼
吵了幾天後終於問出原因
我:為什麼你想要剃那樣?那樣有點奇怪⋯
咖:說不定剃出來很帥阿!5號對我很好的公車司機也剪那樣啊!
我:你知道什麼是禿頭嗎⋯